/**
 * create by 1246263205@qq.com
 * time: 2020年11月2日 23点01分
 * desc: 为了解决vue3 出来没有i18n轮子的问题,自己造了一个车轮子 getVal获取值 getVal("loginForm.A_SignUp") 可以类似json对象.出来
 *  setLocal可以设置基本
 */
class I18n {
    // 构造
    constructor(local) {
        this.local = local;
        this.messages = {
            'zh': require('@/assets/languages/zh.json'),
            'en': require('@/assets/languages/en.json')
        };
        this.message = this.messages.zh;
    }
    getMessage() {
        return this.message;
    }
    getVal(target) {
        let finnalVal = "";
        let prefixes = target.split(".")
        let index = 0
        let nowKey = prefixes[index]
        let obj = this.message;
        if (obj instanceof Array) {
            ArrWay(obj, target)
        } else {
            ObjWay(obj, target)
        }

        function ArrWay(obj) {
            obj.forEach(function(item) {
                if (item instanceof Object) {
                    ObjWay(item, nowKey)
                }
            })
        }

        function ObjWay(obj) {
            for (var key in obj) {
                if (key == nowKey) {
                    let val = obj[key]
                    if (val instanceof Object) {
                        nowKey = prefixes[index + 1];
                        ObjWay(val, nowKey)
                    } else {
                        if (key == nowKey) {
                            finnalVal = val;
                        }
                    }
                }

            }
        }
        return finnalVal
    }
    setLocal(val) {
        switch (val) {
            case 'zh':
                this.message = this.messages.zh
                break;
            case 'en':
                this.message = this.messages.en
                break;
            default:
                this.message = this.messages.zh
        }
    }
}
export { I18n };